Communication systems typically include at least one transmitter station (node) and one receiver station (node). In either a wired or wireless system, a signal sent from the transmitter to the receiver must be of sufficient magnitude (or strength) and quality to allow the information contained within the signal to be discriminated from the noise which is generally present on a communication channel in the system. This may be a greater problem within a wireless system which, typically, is more susceptible to noise from various interference sources. An example of a wireless system is a radio network such as a cellular network commonly utilized for voice and/or data communications between a fixed base station covering a geographic region and mobile devices such as cellular terminals (or phones) present in the covered region.
In data transmission over communication channels that may be prone to errors, such as those found within radio networks, error detection coding and/or error correction coding may be employed to reduce the errors in the data transmission. The data transmitted is often digital information, which includes messages composed of binary bits of information, where each bit can have a value of either a ONE or a ZERO. Any given message is then a string comprising a number of ONES interspersed with a number of ZEROES. It will be appreciated that any string of L bits can represent one of 2.sup.L unique messages. The messages may represent digitized voice information or some other form of information.
Error detection coding and error correction coding may both be used in communication systems. A common error detection technique, the Cyclic Redundancy Check (CRC) technique, generates and appends to the message "check" bits that are calculated from the bits of the data message. The check bits constitute a "checkword" that is specific to a given message. The checkword may be appended to the message so that both are processed through the same encoder, both are transmitted through the communication channel together, and both are processed through the same decoder in the receiver.
A known error correction technique is convolutional coding. Convolutional codes differ from block codes in that the message bits are not explicitly contained within the transmitted bits. In convolutional coding, each message bit is converted to a symbol. The resulting symbol contains `n` bits based on `n` generator polynomials where each polynomial defines some Boolean combination of the current and previous message bits. The message bits are considered L bits at a time, and N=n*L bits are transmitted for every L message bits. The N bits are typically structured for transmission as a single frame (or packet). Frames can either be of a predetermined fixed length (number of bits) or a variable length. It is to be understood that while the term message as used herein will be used interchangeably with frame (or packet), a network higher layer "message" can extend across multiple frames or be contained in a single frame.
The known methods for convolutional decoding include threshold decoding, Sequential Maximum Likelihood Sequence Estimation (SMLSE), and the stack algorithm. The SMLSE technique is commonly known as the Viterbi algorithm, which is described in the literature including D. Forney, "The Viterbi Algorithm," Proc. IEEE, Vol. 61, pp. 268-278 (March, 1973).
An SMLSE algorithm generates a path metric which may be considered a confidence factor representing the degree of correlation between a postulated bit sequence and an actual (e.g., received) bit sequence. To the extent that the postulated and actual bit sequences agree, the path metric varies to reflect the confidence associated with that postulated bit sequence. It will be understood that "postulated bit sequence," or simply "postulate," refers generally to any possible bit sequence having some probability of being the actual bit sequence of interest.
In one variation of the SMLSE algorithm, the received encoded bits are characterized not just by their bit polarities, but by a magnitude or quality measure representing the degree of "ONE-ness" or ZERO-ness." When a "strong" received symbol matches a locally predicted symbol, the confidence factor for the path is increased significantly whereas a "weak" received symbol would increase the confidence factor to a lesser extent. A received symbol which does not match the locally predicted symbol will decrease the confidence factor of the corresponding path with the amount of decrease determined by the "strength" of the mismatching received symbol. This is typically referred to as "soft" decoding as opposed to "hard" decoding.
An SMLSE Viterbi decoder determines the sequence of possibly transmitted data bits that most closely matches the received signal. The Viterbi algorithm allows the best sequence to be determined successively thus avoiding the need to test all two-to-the power of L possible sequences. To establish a starting point for the successive determinations, the encoder is typically initialized to a known starting state before feeding in data bits. In this case, there is only one allowed initial state for the decoder. The number of valid states then doubles at each successive step up to two to the power of the (code constraint length-1). After this point, for a 1/n code, the number of possible paths doubles each time a new unknown bit is postulated but immediately halves again due to an earlier-hypothesized bit now being decided to one of two specific values (this ratio may vary in the more general case of a k/n code). The number of states thus remains constant until the last unknown data bit is hypothesized. Then, typically, known bits are fed into the encoder to flush through the last data bit. The receiver decoder knows a priori what this terminal state will be and each time one more undecided data bit is flushed out of the encoder, the number of possible remaining valid states halves until it becomes a single state. This method of terminating a convolutional block encoder by down tapering to a single end state is called "using tail bits."
In addition to error detection and error correction coding techniques, certain types of communication networks, such as cellular radio communication networks, may change the allocated channel for a communication to ensure an adequate communication channel. This change may provide for handover to a different base station or a change in the channel (for example, a different frequency) without a handover to a different base station. To support channel decision making in such systems, a received signal quality measure (typically quantified as a bit error rate) is utilized to characterize the performance of a communication channel on the network.
Various approaches have been suggested for calculating a received signal quality measurement. One common approach is based upon measurements of Received Signal Strength ("RSS"). A cellular phone typically includes a radio receiver including an antenna for receiving signals and an amplifier/detector for generating a measure of the strength of received signals. Cellular phones using a Time Division Multiple Access ("TDMA") method conforming to either the European cellular standard known as GSM or either of the American TDMA standards known respectively as D-AMPS or PCS1900 use spare time between transmit and receive timeslots to change frequency and monitor the signal strengths of other base stations. Several measurements of RSS are typically averaged for the same base station. The averages are reported to the currently serving base station, which determines if a handover should be made to another, stronger base station. Determination of average RSS can comprise performing a series of measurements that are digitized at the sampling rate of an analog to digital converter which is used for demodulating traffic symbols, i.e., the sampling rate may be one or more times the traffic symbol rate. The measurements are preferably averaged over a TDMA timeslot or other measurement window in order to reduce the effects of fading and noise.
However, this approach to characterizing received signal quality may produce inaccurate results in an environment where multiple transmissions may be occurring. Specifically, the RSS includes the desired signal, adjacent channel interfering signals, co-channel interfering signals from neighboring cells, and noise. The non-desirous interferers may cause a high RSS reading under conditions when the actual bit error rate is high.
Two other techniques have been suggested for use on communication channels using convolutional encoding as the mechanism for bit error correction of transmitted signals. One known approach to bit error rate calculation in such a device is to recode the corrected received signal and compare the recoded signal to the uncorrected signal to calculate a bit error rate based on differences between the re-encoded and the received bit pattern. An example of such a recoding approach to bit error rate calculation is illustrated in Great Britain Patent No. 2305083. This method typically works best whenever the decoder successfully decodes all the received bits, i.e., when the bit error rate is low enough for the error correction code to correct any errors.
An alternative approach, which avoids the requirement for recoding of received signals to generate a bit error rate, is disclosed in International Publication No. WO96/26583. This application suggests retaining the soft decision metrics at each step in the Viterbi decoder trellis, converting these individual decision metrics from an integer format into a floating point format and storing them in a memory unit. A trace back step is then performed to trace the state transitions in the trellis diagram in the reverse order. The sum of the absolute value of the stored soft decision variables in the correct path and the minimum value of the absolute values of the decision variables in the corresponding path are calculated. The sum of the decision variables in the correct path is averaged over a measurement period and compared to set threshold values to determine the bit error rate. This approach avoids the problem of re-encoding but has the disadvantage of requiring storage of metric values for each decision step in the trellis diagram and increased computational complexity for generating average decision values.